
#include <gfx/gl20/effect_gl20.h>


ceEffectGL20::ceEffectGL20 ()
  : iEffect ()
{
  CE_OBJECT_CONSTR;
	_techniques.Clear();
}

ceEffectGL20::~ceEffectGL20()
{
	_techniques.Clear();
}

void ceEffectGL20::ClearEffectPrograms()
{
	_techniques.Clear();
}

void ceEffectGL20::AddEffectTechnique(iEffectTechnique *technique)
{
	_techniques.Add(technique);
}

bool ceEffectGL20::RemoveEffectTechnique(iEffectTechnique *technique)
{
	return _techniques.Remove(technique);
}

unsigned ceEffectGL20::GetNumberOfEffectPrograms() const
{
	return _techniques.GetNumberOfLevels();
}

iEffectTechnique* ceEffectGL20::GetEffectProgram(unsigned idx)
{
	return _techniques.Get(idx);
}


void ceEffectGL20::SetSolver(iLevelOfDetailSolver *solver)
{
	_techniques.SetSolver(solver);
}

iEffectTechnique* ceEffectGL20::Eval(float distance, float size)
{
	return _techniques.Eval(distance, size);
}
